package br.edu.ufcg.dsc.adsd.lotv;

import br.edu.ufcg.dsc.adsd.lotv.core.entites.LAN;
import br.edu.ufcg.dsc.adsd.lotv.core.entites.Printer;
import br.edu.ufcg.dsc.adsd.lotv.core.entites.Server;
import br.edu.ufcg.dsc.adsd.lotv.core.entites.Source;
import eduni.simjava.Sim_stat;
import eduni.simjava.Sim_system;

public class Main {
	
	//TODO: Transformar esses SysO em traces do simjava
	
	public static void main(String[] args) {
		Sim_system.initialise();

		// Toda essa configuração é executada a partir do objeto que configura
		// a simulação a partir do arquivo de config
		Source src = new Source("src", 0.85);
		Server srv = new Server("srv", 0.44);
		LAN lan = new LAN("lan", 0.99);
		Printer prn1 = new Printer("prn1", 1.96);
		Printer prn2 = new Printer("prn2", 1.96);
		Printer prn3 = new Printer("prn3", 1.96);
		Printer prn4 = new Printer("prn4", 1.96);
		// conectar src com srv, srv com lan, lan com prn1, prn1 com lan, 
		//lan com srv,
		src.connect(srv);
		src.defaultGW(srv);
		
		srv.connect(lan);
		srv.defaultGW(lan);
		
		//Deveria precisar desse trecho? R.: Não tem problema, isso fica no file config
		lan.connect(srv);
		lan.connect(prn1);
		lan.connect(prn2);
		lan.connect(prn3);
		lan.connect(prn4);
		
		prn1.connect(lan);
		prn1.defaultGW(lan);
		
		prn2.connect(lan);
		prn2.defaultGW(lan);
		
		prn3.connect(lan);
		prn3.defaultGW(lan);
		
		prn4.connect(lan);
		prn4.defaultGW(lan);

		Sim_system.set_termination_condition(Sim_system.INTERVAL_ACCURACY,
                Sim_system.IND_REPLICATIONS,
                0.90,
                0.1,
                "srv",
                Sim_stat.UTILISATION);
		Sim_system.run();
	}

}
